package com.j283_5.wisdom_park.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.j283_5.wisdom_park.common.result.ResultData;
import com.j283_5.wisdom_park.pojo.ContractTable;
import com.j283_5.wisdom_park.vo.contract_management.CollectionRecordVo;
import com.j283_5.wisdom_park.vo.contract_management.ContractAddVo;
import com.j283_5.wisdom_park.vo.contract_management.ContractTableVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 合同表 服务类
 * </p>
 *
 * @author laoda
 * @since 2022-04-28
 */
public interface ContractTableService  {
    /**
     * 多条件查询合同信息
     * @param contractTableVo
     * @param page
     * @param limit
     * @return
     */
    Map<String,Object> findContractTable(ContractTableVo contractTableVo, Integer page, Integer limit );

    /**
     * 根据id查询合同信息
     * @param contract_id
     * @return
     */
    ResultData findContractTableInfoById(Integer contract_id);

    /**
     * 根据合同id查询房间信息
     * @param contract_id
     * @return
     */
    Map<String,Object>  findRoomById(Integer contract_id);

    /**
     * 根据合同id查询收款信息
     * @param contract_id
     * @return
     */
    Map<String,Object>  findCollectionById(Integer contract_id);

    /**
     * 根据合同id删除合同
     * @param contract_id
     * @return
     */
    ResultData deleteContractTable(@Param("contract_id") List<Integer> contract_id);

    /**
     * 插入合同
     * @param contractTableVo
     * @return
     */
    int insertContract(
            @Param("contractTableVo") ContractTableVo contractTableVo,
            @Param("contractAddVo") ContractAddVo contractAddVo
    );

    /**
     * 查找合同插入时的id
     * @param contractTableVo
     * @return
     */
    Integer findContractAddPer_IdVo(
            @Param("contractTableVo") ContractTableVo contractTableVo
    );


    /**
     * 插入租凭房间信息
     * @param contractTableVo
     * @return
     */
    int insertRoom(
            @Param("contractTableVo") ContractTableVo contractTableVo,
            @Param("contractAddVo") ContractAddVo contractAddVo
    );

    /**
     * 插入收帐信息
     * @return
     */
    int insertCollection_record(
            @Param("collectionRecordVo") CollectionRecordVo collectionRecordVo,
            @Param("contractAddVo") ContractAddVo contractAddVo
    );

    /**
     * 签订合同
     * @param ContractId
     * @return
     */
    ResultData DoContractTable(
      List<Integer>ContractId
    );
}
